//
//  MPCTableView.m
//  Pods
//
//  Created by HouGeng on 17/7/22.
//
//

#import "MPCTableView.h"

@interface MPCTableView ()


@end


@implementation MPCTableView


#pragma mark - *********************************** View Lifecycle **********************************

- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style
{
    if (self = [super initWithFrame:frame style:style])
    {
        /// 初始化变量
        /// [self initVariable]; /// 暂时用不到
        /// 设置公共属性，与App的UI规范 无关
        /// [self setCommonAttribute]; /// 暂时用不到
        
        /// 设置公共属性，与App的UI规范 有关
        [self setCustomAttribute];
    }
    
    return self;
}

- (void)initVariable
{
    
}

/// 设置公共属性，与App的UI规范 无关
- (void)setCommonAttribute
{
    
}

/// 设置公共属性，与App的UI规范 有关
- (void)setCustomAttribute
{
    if (self)
    {
        /// 去掉背景View
        self.backgroundView = nil;
        /// 设置背景颜色
        self.backgroundColor = [UIColor whiteColor];
        /// 去掉系统自带的分割线
        self.separatorStyle = UITableViewCellSeparatorStyleNone;
        self.separatorColor = [UIColor clearColor];
        /// 不显示 水平 滑条
        self.showsHorizontalScrollIndicator = NO;
        /// 不显示 垂直 滑条
        self.showsVerticalScrollIndicator = NO;
        self.clipsToBounds = YES;
    }
}

- (void)setFrame:(CGRect)frame
{
    [super setFrame:frame];
}

- (void)setContentSize:(CGSize)contentSize
{
    [super setContentSize:contentSize];
}

- (void)dealloc
{
    
}


#pragma mark - ********************************** 初始化方法 工厂方法 *********************************

#pragma mark - 初始化基本设置

+ (instancetype)getWithFrame:(CGRect)frame target:(id)target;
{
    /// 默认 Grouped 类型
    MPCTableView *tabv = [[MPCTableView alloc] initWithFrame:frame
                                                    target:target
                                                     style:UITableViewStyleGrouped];
    
    return tabv;
}

+ (instancetype)getWithFrame:(CGRect)frame target:(id)target style:(UITableViewStyle)style
{
    MPCTableView *tabv = [[MPCTableView alloc] initWithFrame:frame
                                                    target:target
                                                     style:style];
    
    return tabv;
}


#pragma mark - ********************************** 初始化方法 实例方法 *********************************

#pragma mark - 初始化基本设置

- (instancetype)initWithFrame:(CGRect)frame target:(id)target
{
    /// 默认 Grouped 类型
    if (self = [self initWithFrame:frame target:target style:UITableViewStylePlain])
    {
        
    }
    
    return self;
}

- (instancetype)initWithFrame:(CGRect)frame target:(id)target style:(UITableViewStyle)style
{
    if (self = [self initWithFrame:frame style:style])
    {
        /// 设置代理
        self.delegate = target;
        self.dataSource = target;
    }
    
    return self;
}


#pragma mark - *********************************** 设置属性 实例方法 **********************************

- (void)setCornerRadiusForAll:(float)cornerRadius
{
    self.clipsToBounds = YES;
    self.layer.cornerRadius = cornerRadius;
}

- (void)setCornerRadiusForPart:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii
{
    // 上面两个圆角
    UIBezierPath *maskPath=  [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                                   byRoundingCorners:corners
                                                         cornerRadii:cornerRadii];
    
    CAShapeLayer *maskLayer=[[CAShapeLayer alloc] init];
    
    maskLayer.frame=self.bounds;
    
    maskLayer.path=maskPath.CGPath;
    
    self.layer.mask=maskLayer;
    
    self.layer.masksToBounds=YES;
}

@end
